根本原因を取り除け!「なぜなぜ分析」のお話
はじめに
ソフトウェア品質を向上するために、テストをしてバグを見つけて改修する。システム開発に携わっていれば、ここまでは当たり前のように実施しているけど、「なぜなぜ分析」して真因を見つけて対処するところまで実施しているプロジェクトは意外と少ないのではないでしょうか。そこまで実施している余裕がないというプロジェクトは多いと思いますが、私が携わっているプロジェクトでは「やり方がわからない」「効果がピンと来ない」という理由で実施出来ないことも多いです。
そこで、「なぜなぜ分析」の効果、やり方についてまとめておきたいと思います。
「なぜなぜ分析」の効果
テストをして発生したバグに対して原因を見つけて改修すると、そのバグはもちろん発生しなくなります。原因が取り除かれたからですね。これで一安心!ではあるのですが、「真の原因により他の箇所にもバグが作り込まれている可能性」があります。これらのバグをまとめて一掃するために実施するのが「なぜなぜ分析」です。
「なぜなぜ分析」のやり方
例えばテストで「ボタンをタップしても画面遷移しない」という事象が発生したとします。原因は「iOS10に対応していないコードになっていた」としましょう。なぜなぜ分析はこの原因に対して「なぜこういうコードを作り込んでしまったのか?」を探っていきます。
・iOS10がスコープ範囲内であることを理解していなかった ・iOS10がスコープ範囲内であることは理解していたが対処する方法がわからなかった
そもそも知らなかった、知ってたけどスキルが足りなかった、これらは「なぜなぜ分析」によく出てくるパターンです。
「なぜなぜ分析」は2回以上は掘り下げます。過去に5回掘り下げてるプロジェクトもありましたが、個人的には最大3回が適切だと思います。「iOS10がスコープ範囲内であることを理解していなかった」→「スコープ範囲を意識していなかった」→「スコープ範囲が共有されていなかった」。
「スコープ範囲が共有されていなかった」ということで情報共有が真因であることが分かりました。この真因に対して対処を決定します。「OSのスコープ範囲をチームメンバー全員に情報共有」が対処になります。対処だけだとすでに作り込んでしまったバグは解消されないので、テスト項目を追加する、ソースコードを横並び点検する、といった品質向上を実施して、バグを一掃していきます。
ちなみにやり過ぎると「生まれてこなければよかった」に行き着くのでほどほどにw
さいごに
なぜなぜ分析の効果とやり方は理解できましたか?不明点があればぜひご連絡ください。
私が携わった300人超の開発ではPM・エンジニアの質がピンキリだったので一定レベル以上の品質を確保するための手段として絶大な効果を発揮していました。少人数、優秀なPM・エンジニアの場合は真因としてよく出てくる原因が「事前に潰されている or 発生しにくい」ので、あまり効果を発揮しないです。適材適所で適用していきましょう。